Ternary Raster Operations
This section
lists the ternary raster-operation codes used by the BitBlt
Each
raster-operation code represents a Boolean operation in which the values of the
pixels in the source, the selected brush, and the destination are combined.
Following are the three operands used in these operations:
Operand |
Meaning |
D |
Destination
bitmap |
P |
Selected
brush (also called pattern) |
S |
Source
bitmap |
Boolean
operators used in these operations follow:
Operator |
Meaning |
a |
Bitwise AND |
n |
Bitwise NOT
(inverse) |
o |
Bitwise OR |
x |
Bitwise
exclusive OR (XOR) |
All Boolean
operations are presented in reverse Polish notation. For example, the following
operation replaces the values of the pixels in the destination bitmap with a
combination of the pixel values of the source and brush:
PSo
The following
operation combines the values of the pixels in the source and brush with the
pixel values of the destination bitmap (there are alternative spellings of the
same function, so although a particular spelling may not be in the list, an
equivalent form would be):
DPSoo
Each
raster-operation code is a 32-bit integer whose high-order word is a Boolean operation
index and whose low-order word is the operation code. The 16-bit operation
index is a zero-extended, 8-bit value that represents the result of the Boolean
operation on predefined brush, source, and destination values. For example, the
operation indexes for the PSo and DPSoo operations are shown in the following
list:
P |
S |
D |
PSo |
DPSoo |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Operation
index: |
|
|
00FCh |
00FEh |
In this case,
PSo has the operation index 00FC (read from the bottom up); DPSoo has the
operation index 00FE. These values define the location of the corresponding
raster-operation codes, as shown in Table A.1, Raster-Operation Codes. The
PSo operation is in line 252 (00FCh) of the table; DPSoo is in line 254
(00FEh).
The most
commonly used raster operations have been given special names in the Windows
include file, WINDOWS.H. You should use these names whenever possible in your
applications.
When the source
and destination bitmaps are monochrome, a bit value of zero represents a black
pixel and a bit value of 1 represents a white pixel. When the source and the
destination bitmaps are color, those colors are represented with RGB values.
For more information about RGB values, see RGB959Q0EE@win32.hlp
Raster-Operation Codes
Boolean
function (hexadecimal) |
Raster
operation (hexadecimal) |
Boolean
function in reverse Polish |
Common
name |
00 |
00000042 |
0 |
BLACKNESS |
01 |
00010289 |
DPSoon |
- |
02 |
00020C89 |
DPSona |
- |
03 |
000300AA |
PSon |
- |
04 |
00040C88 |
SDPona |
- |
05 |
000500A9 |
DPon |
- |
06 |
00060865 |
PDSxnon |
- |
07 |
000702C5 |
PDSaon |
- |
08 |
00080F08 |
SDPnaa |
- |
09 |
00090245 |
PDSxon |
- |
0A |
000A0329 |
DPna |
- |
0B |
000B0B2A |
PSDnaon |
- |
0C |
000C0324 |
SPna |
- |
0D |
000D0B25 |
PDSnaon |
- |
0E |
000E08A5 |
PDSonon |
- |
0F |
000F0001 |
Pn |
- |
10 |
00100C85 |
PDSona |
- |
11 |
001100A6 |
DSon |
NOTSRCERASE |
12 |
00120868 |
SDPxnon |
- |
13 |
001302C8 |
SDPaon |
- |
14 |
00140869 |
DPSxnon |
- |
15 |
001502C9 |
DPSaon |
- |
16 |
00165CCA |
PSDPSanaxx |
- |
17 |
00171D54 |
SSPxDSxaxn |
- |
18 |
00180D59 |
SPxPDxa |
- |
19 |
00191CC8 |
SDPSanaxn |
- |
1A |
001A06C5 |
PDSPaox |
- |
1B |
001B0768 |
SDPSxaxn |
- |
1C |
001C06CA |
PSDPaox |
- |
1D |
001D0766 |
DSPDxaxn |
- |
1E |
001E01A5 |
PDSox |
- |
1F |
001F0385 |
PDSoan |
- |
20 |
00200F09 |
DPSnaa |
- |
21 |
00210248 |
SDPxon |
- |
22 |
00220326 |
DSna |
- |
23 |
00230B24 |
SPDnaon |
- |
24 |
00240D55 |
SPxDSxa |
- |
25 |
00251CC5 |
PDSPanaxn |
- |
26 |
002606C8 |
SDPSaox |
- |
27 |
00271868 |
SDPSxnox |
- |
28 |
00280369 |
DPSxa |
- |
29 |
002916CA |
PSDPSaoxxn |
- |
2A |
002A0CC9 |
DPSana |
- |
2B |
002B1D58 |
SSPxPDxaxn |
- |
2C |
002C0784 |
SPDSoax |
- |
2D |
002D060A |
PSDnox |
- |
2E |
002E064A |
PSDPxox |
- |
2F |
002F0E2A |
PSDnoan |
- |
30 |
0030032A |
PSna |
- |
31 |
00310B28 |
SDPnaon |
- |
32 |
00320688 |
SDPSoox |
- |
33 |
00330008 |
Sn |
NOTSRCCOPY |
34 |
003406C4 |
SPDSaox |
- |
35 |
00351864 |
SPDSxnox |
- |
36 |
003601A8 |
SDPox |
- |
37 |
00370388 |
SDPoan |
- |
38 |
0038078A |
PSDPoax |
- |
39 |
00390604 |
SPDnox |
- |
3A |
003A0644 |
SPDSxox |
- |
3B |
003B0E24 |
SPDnoan |
- |
3C |
003C004A |
PSx |
- |
3D |
003D18A4 |
SPDSonox |
- |
3E |
003E1B24 |
SPDSnaox |
- |
3F |
003F00EA |
PSan |
- |
40 |
00400F0A |
PSDnaa |
- |
41 |
00410249 |
DPSxon |
- |
42 |
00420D5D |
SDxPDxa |
- |
43 |
00431CC4 |
SPDSanaxn |
- |
44 |
00440328 |
SDna |
SRCERASE |
45 |
00450B29 |
DPSnaon |
- |
46 |
004606C6 |
DSPDaox |
- |
47 |
0047076A |
PSDPxaxn |
- |
48 |
00480368 |
SDPxa |
- |
49 |
004916C5 |
PDSPDaoxxn |
- |
4A |
004A0789 |
DPSDoax |
- |
4B |
004B0605 |
PDSnox |
- |
4C |
004C0CC8 |
SDPana |
- |
4D |
004D1954 |
SSPxDSxoxn |
- |
4E |
004E0645 |
PDSPxox |
- |
4F |
004F0E25 |
PDSnoan |
- |
50 |
00500325 |
PDna |
- |
51 |
00510B26 |
DSPnaon |
- |
52 |
005206C9 |
DPSDaox |
- |
53 |
00530764 |
SPDSxaxn |
- |
54 |
005408A9 |
DPSonon |
- |
55 |
00550009 |
Dn |
DSTINVERT |
56 |
005601A9 |
DPSox |
- |
57 |
00570389 |
DPSoan |
- |
58 |
00580785 |
PDSPoax |
- |
59 |
00590609 |
DPSnox |
- |
5A |
005A0049 |
DPx |
PATINVERT |
5B |
005B18A9 |
DPSDonox |
- |
5C |
005C0649 |
DPSDxox |
- |
5D |
005D0E29 |
DPSnoan |
- |
5E |
005E1B29 |
DPSDnaox |
- |
5F |
005F00E9 |
DPan |
- |
60 |
00600365 |
PDSxa |
- |
61 |
006116C6 |
DSPDSaoxxn |
- |
62 |
00620786 |
DSPDoax |
- |
63 |
00630608 |
SDPnox |
- |
64 |
00640788 |
SDPSoax |
- |
65 |
00650606 |
DSPnox |
- |
66 |
00660046 |
DSx |
SRCINVERT |
67 |
006718A8 |
SDPSonox |
- |
68 |
006858A6 |
DSPDSonoxxn |
- |
69 |
00690145 |
PDSxxn |
- |
6A |
006A01E9 |
DPSax |
- |
6B |
006B178A |
PSDPSoaxxn |
- |
6C |
006C01E8 |
SDPax |
- |
6D |
006D1785 |
PDSPDoaxxn |
- |
6E |
006E1E28 |
SDPSnoax |
- |
6F |
006F0C65 |
PDSxnan |
- |
70 |
00700CC5 |
PDSana |
- |
71 |
00711D5C |
SSDxPDxaxn |
- |
72 |
00720648 |
SDPSxox |
- |
73 |
00730E28 |
SDPnoan |
- |
74 |
00740646 |
DSPDxox |
- |
75 |
00750E26 |
DSPnoan |
- |
76 |
00761B28 |
SDPSnaox |
- |
77 |
007700E6 |
DSan |
- |
78 |
007801E5 |
PDSax |
- |
79 |
00791786 |
DSPDSoaxxn |
- |
7A |
007A1E29 |
DPSDnoax |
- |
7B |
007B0C68 |
SDPxnan |
- |
7C |
007C1E24 |
SPDSnoax |
- |
7D |
007D0C69 |
DPSxnan |
- |
7E |
007E0955 |
SPxDSxo |
- |
7F |
007F03C9 |
DPSaan |
- |
80 |
008003E9 |
DPSaa |
- |
81 |
00810975 |
SPxDSxon |
- |
82 |
00820C49 |
DPSxna |
- |
83 |
00831E04 |
SPDSnoaxn |
- |
84 |
00840C48 |
SDPxna |
- |
85 |
00851E05 |
PDSPnoaxn |
- |
86 |
008617A6 |
DSPDSoaxx |
- |
87 |
008701C5 |
PDSaxn |
- |
88 |
008800C6 |
DSa |
SRCAND |
89 |
00891B08 |
SDPSnaoxn |
- |
8A |
008A0E06 |
DSPnoa |
- |
8B |
008B0666 |
DSPDxoxn |
- |
8C |
008C0E08 |
SDPnoa |
- |
8D |
008D0668 |
SDPSxoxn |
- |
8E |
008E1D7C |
SSDxPDxax |
- |
8F |
008F0CE5 |
PDSanan |
- |
90 |
00900C45 |
PDSxna |
- |
91 |
00911E08 |
SDPSnoaxn |
- |
92 |
009217A9 |
DPSDPoaxx |
- |
93 |
009301C4 |
SPDaxn |
- |
94 |
009417AA |
PSDPSoaxx |
- |
95 |
009501C9 |
DPSaxn |
- |
96 |
00960169 |
DPSxx |
- |
97 |
0097588A |
PSDPSonoxx |
- |
98 |
00981888 |
SDPSonoxn |
- |
99 |
00990066 |
DSxn |
- |
9A |
009A0709 |
DPSnax |
- |
9B |
009B07A8 |
SDPSoaxn |
- |
9C |
009C0704 |
SPDnax |
- |
9D |
009D07A6 |
DSPDoaxn |
- |
9E |
009E16E6 |
DSPDSaoxx |
- |
9F |
009F0345 |
PDSxan |
- |
A0 |
00A000C9 |
DPa |
- |
A1 |
00A11B05 |
PDSPnaoxn |
- |
A2 |
00A20E09 |
DPSnoa |
- |
A3 |
00A30669 |
DPSDxoxn |
- |
A4 |
00A41885 |
PDSPonoxn |
- |
A5 |
00A50065 |
PDxn |
- |
A6 |
00A60706 |
DSPnax |
- |
A7 |
00A707A5 |
PDSPoaxn |
- |
A8 |
00A803A9 |
DPSoa |
- |
A9 |
00A90189 |
DPSoxn |
- |
AA |
00AA0029 |
D |
- |
AB |
00AB0889 |
DPSono |
- |
AC |
00AC0744 |
SPDSxax |
- |
AD |
00AD06E9 |
DPSDaoxn |
- |
AE |
00AE0B06 |
DSPnao |
- |
AF |
00AF0229 |
DPno |
- |
B0 |
00B00E05 |
PDSnoa |
- |
B1 |
00B10665 |
PDSPxoxn |
- |
B2 |
00B21974 |
SSPxDSxox |
- |
B3 |
00B30CE8 |
SDPanan |
- |
B4 |
00B4070A |
PSDnax |
- |
B5 |
00B507A9 |
DPSDoaxn |
- |
B6 |
00B616E9 |
DPSDPaoxx |
- |
B7 |
00B70348 |
SDPxan |
- |
B8 |
00B8074A |
PSDPxax |
- |
B9 |
00B906E6 |
DSPDaoxn |
- |
BA |
00BA0B09 |
DPSnao |
- |
BB |
00BB0226 |
DSno |
MERGEPAINT |
BC |
00BC1CE4 |
SPDSanax |
- |
BD |
00BD0D7D |
SDxPDxan |
- |
BE |
00BE0269 |
DPSxo |
- |
BF |
00BF08C9 |
DPSano |
- |
C0 |
00C000CA |
PSa |
MERGECOPY |
C1 |
00C11B04 |
SPDSnaoxn |
- |
C2 |
00C21884 |
SPDSonoxn |
- |
C3 |
00C3006A |
PSxn |
- |
C4 |
00C40E04 |
SPDnoa |
- |
C5 |
00C50664 |
SPDSxoxn |
- |
C6 |
00C60708 |
SDPnax |
- |
C7 |
00C707AA |
PSDPoaxn |
- |
C8 |
00C803A8 |
SDPoa |
- |
C9 |
00C90184 |
SPDoxn |
- |
CA |
00CA0749 |
DPSDxax |
- |
CB |
00CB06E4 |
SPDSaoxn |
- |
CC |
00CC0020 |
S |
SRCCOPY |
CD |
00CD0888 |
SDPono |
- |
CE |
00CE0B08 |
SDPnao |
- |
CF |
00CF0224 |
SPno |
- |
D0 |
00D00E0A |
PSDnoa |
- |
D1 |
00D1066A |
PSDPxoxn |
- |
D2 |
00D20705 |
PDSnax |
- |
D3 |
00D307A4 |
SPDSoaxn |
- |
D4 |
00D41D78 |
SSPxPDxax |
- |
D5 |
00D50CE9 |
DPSanan |
- |
D6 |
00D616EA |
PSDPSaoxx |
- |
D7 |
00D70349 |
DPSxan |
- |
D8 |
00D80745 |
PDSPxax |
- |
D9 |
00D906E8 |
SDPSaoxn |
- |
DA |
00DA1CE9 |
DPSDanax |
- |
DB |
00DB0D75 |
SPxDSxan |
- |
DC |
00DC0B04 |
SPDnao |
- |
DD |
00DD0228 |
SDno |
- |
DE |
00DE0268 |
SDPxo |
- |
DF |
00DF08C8 |
SDPano |
- |
E0 |
00E003A5 |
PDSoa |
- |
E1 |
00E10185 |
PDSoxn |
- |
E2 |
00E20746 |
DSPDxax |
- |
E3 |
00E306EA |
PSDPaoxn |
- |
E4 |
00E40748 |
SDPSxax |
- |
E5 |
00E506E5 |
PDSPaoxn |
- |
E6 |
00E61CE8 |
SDPSanax |
- |
E7 |
00E70D79 |
SPxPDxan |
- |
E8 |
00E81D74 |
SSPxDSxax |
- |
E9 |
00E95CE6 |
DSPDSanaxxn |
- |
EA |
00EA02E9 |
DPSao |
- |
EB |
00EB0849 |
DPSxno |
- |
EC |
00EC02E8 |
SDPao |
- |
ED |
00ED0848 |
SDPxno |
- |
EE |
00EE0086 |
DSo |
SRCPAINT |
EF |
00EF0A08 |
SDPnoo |
- |
F0 |
00F00021 |
P |
PATCOPY |
F1 |
00F10885 |
PDSono |
- |
F2 |
00F20B05 |
PDSnao |
- |
F3 |
00F3022A |
PSno |
- |
F4 |
00F40B0A |
PSDnao |
- |
F5 |
00F50225 |
PDno |
- |
F6 |
00F60265 |
PDSxo |
- |
F7 |
00F708C5 |
PDSano |
- |
F8 |
00F802E5 |
PDSao |
- |
F9 |
00F90845 |
PDSxno |
- |
FA |
00FA0089 |
DPo |
- |
FB |
00FB0A09 |
DPSnoo |
PATPAINT |
FC |
00FC008A |
PSo |
- |
FD |
00FD0A0A |
PSDnoo |
- |
FE |
00FE02A9 |
DPSoo |
- |
FF |
00FF0062 |
1 |
WHITENESS |